/**
 * 表单选项类型
 */
export interface FormOption {
  label: string;
  value: string | number;
}

/**
 * 表单验证规则类型
 */
export interface FormRule {
  required?: boolean;
  message?: string;
  pattern?: RegExp;
  min?: number;
  max?: number;
  validator?: (rule: unknown, value: unknown) => Promise<void>;
}

/**
 * 表单项配置类型
 */
export interface FormItemConfig {
  /** 字段名 */
  name: string;
  /** 标签 */
  label: string;
  /** 字段类型 */
  type: 'input' | 'textarea' | 'select' | 'number' | 'password' | 'email' | 'date';
  /** 验证规则 */
  rules?: FormRule[];
  /** 占位符 */
  placeholder?: string;
  /** 选项（用于select类型） */
  options?: FormOption[];
  /** 是否禁用 */
  disabled?: boolean;
  /** 其他属性 */
  [key: string]: unknown;
}

/**
 * 通用表单弹窗配置类型
 */
export interface FormModalConfig<T = Record<string, unknown>> {
  /** 弹窗标题 */
  title: string;
  /** 表单配置项 */
  formItems: FormItemConfig[];
  /** 表单初始值 */
  initialValues?: Partial<T>;
  /** 弹窗宽度 */
  width?: number;
  /** 是否销毁弹窗内容 */
  destroyOnClose?: boolean;
  /** 是否点击遮罩关闭 */
  maskClosable?: boolean;
}
